package com.metadata_system.common.dto;

import com.metadata_system.common.utils.AesUtils;
import lombok.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.util.HashMap;
import java.util.Map;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
@Slf4j
public class JwtToken {
    // 用户加密ID
    String id;
    // 用户账号
    String username;
    // 用户类型
    String role;
    // tokenID
    String tokenId;
    // jwtToken
    String jwtToken;

    Integer params;

    public Map<String, Object> backMap() {
        Map<String, Object> map = new HashMap<>();
        map.put("id", id);
        map.put("username", username);
        map.put("role", role);
        map.put("tokenId", tokenId);
        map.put("jwtToken", jwtToken);
        map.put("params", params);
        return map;
    }

    public static Integer decodeIDByString(String id) {
        try {
            return Integer.valueOf(AesUtils.Decrypt(id));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    // 解密id,并返回
    public Integer decodeID() {
        if (StringUtils.isEmpty(this.id)){
            return 0;
        }
        try {
            return Integer.valueOf(AesUtils.Decrypt(this.id));
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

    // 加密,设置ID
    public JwtToken encodeID(String id) {
        if (StringUtils.isEmpty(id)){
            return this;
        }
        try {
            this.id = AesUtils.Encrypt(id);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return this;
    }
}
